package com.ruoyi.common.config;

import com.ruoyi.common.dao.service.MyDisposableWorkerIdAssigner;
import com.xfvape.uid.impl.CachedUidGenerator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class CachedUidGeneratorConfig {
    @Bean
    public MyDisposableWorkerIdAssigner disposableWorkerIdAssigner(){
        return new MyDisposableWorkerIdAssigner();
    }
    @Bean
    public CachedUidGenerator cachedUidGenerator(MyDisposableWorkerIdAssigner disposableWorkerIdAssigner){
        CachedUidGenerator cachedUidGenerator = new CachedUidGenerator();
        cachedUidGenerator.setWorkerIdAssigner(disposableWorkerIdAssigner);
        //以下为可选配置, 如未指定将采用默认值
//        cachedUidGenerator.setTimeBits(31);//当前时间位数，这里设置 29 位
//        cachedUidGenerator.setWorkerBits(19);//机器 id 位数，设置 21 位
//        cachedUidGenerator.setSeqBits(13);//每秒下的并发序列位数，13 bits 可支持每秒 8192 个并发
        cachedUidGenerator.setEpochStr("2024-12-31");//相对于时间基点"2016-09-20"的增量值，单位是秒.用于计算时间戳的差值（当前时间减去固定的开始时间），这样可以使产生的 ID 从更小值开始
//        cachedUidGenerator.setBoostPower(3);
//        cachedUidGenerator.setScheduleInterval(60L);
        return cachedUidGenerator;
    }
}
